/**
 * return
 * 生成器提前结束
 */
function* foo(initial) {
  console.log('-----函数开始执行-----')

  const value1 = 1
  console.log(value1)
  const res1 = yield value1 * initial

  //
  // return res1

  const value2 = 2 * res1
  console.log(value2)
  yield value2

  const value3 = 3
  console.log(value3)
  yield

  console.log('-----函数结束执行-----')
  return '12345'
}

const generator = foo(90)
//开始第一段代码，第一个yield之前的代码，这个next不接受参数
console.log(generator.next())
//第二段代码的执行，使用了return
//那么就意味着相当于在第一段代码的后面加上return res1，就会提前终止了生成器函数代码的继续执行
//后序再调用next就不会继续生成值了
console.log(generator.return(15)) //{ value: 15, done: true }
console.log(generator.next(20))
